package StreanmLearn.End;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

public class Streanm流的终结方法1 {
    public static void main(String[] args) {
        /*
        void forEach(Consumer action)  遍历
        long cont()  统计
        toArrays()  收集流中的数据，放到数据当中
         */
        ArrayList<String> list=new ArrayList<>();
        Collections.addAll(list,"张无忌","李四","张强","张三丰","王五","克莱普","谢广坤");

        //void forEach(Consumer action)  遍历
        //Consumer的泛型:表示流中的数据类型
        //action方法的参数s:依次表示流里面的每一个数据
        //方法体:对每一个数据的处理操作
//        list.stream().forEach(new Consumer<String>() {
//            @Override
//            public void accept(String s) {
//                System.out.println(s);
//            }
//        });
        list.stream().forEach(s-> System.out.println(s));
        System.out.println("--------------------");

        //long count()  统计
        long count = list.stream().count();
        System.out.println(count);
        System.out.println("----------------------");

        //toArrays()  收集流中的数据，放到数据当中
//        Object[] arr1=list.stream().toArray();
//        System.out.println(arr1);

        //IntFunction的泛型:具体类型的数据
        //apply的形参:流中数据的个数,要跟数组的长度保持一致
        //apply的返回值:具体类型的数组
        //方法体:就是创建数组
        //toArray方法的参数的作用:负责创建一个指定类型的数组
        //toArray方法的底层:会依次得到流里面的每一个数组，并把数据放到数组当中
        //toArray方法的返回值:是一个装着流里面的所有数据类型
//        String[] array = list.stream().toArray(new IntFunction<String[]>() {
//            @Override
//            public String[] apply(int value) {
//                return new String[value];
//            }
//        });
//        System.out.println(array);

        String[] strings = list.stream().toArray(value-> new String[value]);
        System.out.println(Arrays.toString(strings));


    }
}
